ICL(コンテキスト内学習: In Context Learning)
https://scrapbox.io/files/664d8876c9050c001d33b13f.png
「プロンプトから一時的に学習するモデルの能力」
AIが与えられた情報(プロンプト)からその場で学び、その情報を使って質問に答えたり、タスクをこなしたりする能力のこと。
中学生に例えるなら、先生が授業で新しい数学の公式を教えたとします。その公式を聞いた後、すぐにその公式を使って問題を解くことができれば、それは「文脈内学習」のようなものです。
AIも同じように、新しい情報を得たら、その情報を使ってすぐに質問に答えたり、何かをすることができます。ただし、AIはその情報を永久に覚えているわけではなく、その場限りの学習です。次に別のタスクをする時には、また新しい情報を学ぶ必要があります。
これ、何?わかりやすく
新人が研修を終えて現場に出るのと同じように
言語モデルも事前トレーニング(研修)を終えた後、実際のタスクや質問に対応しながら学ぶ。
研修中に学んだことを基に、実際の状況に応じて知識を適用し、経験を積みながらさらに学習していく。
言語モデルにとっては、「コンテキスト内学習」がその実践学習のプロセスにあたる。
この解説がわかりやすい
・「特定タスクのためにファインチューニングなんていちいちやってられねー。Inputから学習させたら、色んなタスクこなせないかなー -> こなせたー!!」
・事前学習モデルの精度向上のためにファインチューニングというものが流行ったそうです。ファインチューニングというのはまさに教師ありの強化学習で、モデルをさらに学習させて精度を上げていくものでした。たしかに精度は上がったのですが、いちいち学習し直さなきゃタスクに適応できないという課題があり、冒頭セリフに繋がりました。(教師ありだとスケールしねえよね。と生まれたのがDeepLeraningのアイディアになってる辺り、自然な流れと思います。) どんな背景でうまれたの?
十分な量の教師ありデータを用意するのは大変。
特定のタスクに適応するためにラベル付きデータが必要であり,アノテーションに多大なコストがかかる。
そもそも人間は、多くの教師ありデータを必要とせずに、簡潔な指示や短いデモストレーションのみから言語タスクを解くことができるよね。
言語モデルが広く有用であるためには、このような柔軟性と汎用性が望ましい。
言語モデルが人間から直接教えられることなく、多くのテキストを読んで学ぶ過程(コンテキスト内学習: 教師なしの事前トレーニング)で、モデルは様々なスキルやパターンを認識する能力を身につけさせ、新しいタスクや問題に素早く対応することを目指す。
特に,In-context Learningにおいて
与えられる入力が1: One-Shot Learning
つまり、
プロンプトに1つだけ解答例いれる -> One-shot
ICLの具体例
例えば、言語モデルが「レストランでの食事の注文」に関する多くのテキストを読んだとする。
その過程で、モデルは次のようなスキルやパターンを学習する:
1. どのようにして、客が料理を注文するか(例:「ハンバーガーとフライドポテトをください」)。
2. ウェイターやウェイトレスが、どのような応答をするか(例:「ドリンクは何になさいますか?」)。
3. さまざまな食事や飲み物の名前。
この学習後、もしモデルが「私はピザを注文したいです。どのように頼めばいいですか?」という新しい文章を見たとする。
モデルは以前に学んだパターンを使って、この質問に答えることができる。
「レストランのウェイターに『私はピザを一つお願いします』と言ってください」のように
これが「コンテキスト内学習」の例。
モデルは新しい文脈に合わせて、過去に学んだ情報を活用して迅速に対応できる。
関連論文
参考資料